<!DOCTYPE html>
<html lang="en">

<head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
</head>

<body>
        <script>
                // ********************************************************************************************************************************

                // 1.封装函数fn(arr)  
                // 将arr里面的所有的数字乘以5  
                // ["a", "c", 6, "e", 5, 3, "d"]
                // =>["a","c",30,"e",25,15,"d"]



                // ********************************************************************************************************************************

                //3、遍历数组，找最小值

                // var arr = [3, 4, 2, 8, 15, 1, 98]; //最小值为:1





                // ********************************************************************************************************************************

                //4、随机生成一个十六进制的颜色值，改变页面颜色
                // 十六进制数它由0-9，A-F组成，字母不区分大小写









                // ********************************************************************************************************************************

                // 5.将数组中重复的值只保留一个，返回 




                // ********************************************************************************************************************************


                // //6.reverse封装

                // var arr = [1, 2, 3, 4]

                // fn(arr)  =>[4,3,2,1]


                // ********************************************************************************************************************************

                //7.indexOf的完整封装




                // ********************************************************************************************************************************

                //8.封装一个排序方法, 可实现数组的内容从小到大排序（sort的封装）

                // ********************************************************************************************************************************

                // 9.求二维数组的和



                // ********************************************************************************************************************************

                // 10.0：模拟indexOf方法，有两个参数
                // ********************************************************************************************************************************


                // 10.1:   一维转二维

                // ********************************************************************************************************************************

                // 10.2:冒泡排序

                // ********************************************************************************************************************************

                // 10.3 选择排序

                function selectionSort(arr) {
                        var len = arr.length;
                        var minIndex, temp;
                        console.time('选择排序耗时');
                        for (var i = 0; i < len - 1; i++) {
                                minIndex = i;
                                for (var j = i + 1; j < len; j++) {
                                        if (arr[j] < arr[minIndex]) { //寻找最小的数

                                                minIndex = j; //将最小数的索引保存

                                        }
                                }
                                temp = arr[i];
                                arr[i] = arr[minIndex];
                                arr[minIndex] = temp;
                        }

                        console.timeEnd('选择排序耗时');
                        return arr;
                }
                // var arr = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 1];
                // console.log(selectionSort(arr)); //[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]


                // ********************************************************************************************************************************


                // 10.封装一个函数searchResult(), 根据传入的数据及条件，输出符合条件的人名，最终得到是一个数组。
                // searchResult(stus, ’女’, ’大一’)根据数据去查询，将符合条件女且大一的学生姓名放到一个数组中返回


                // var stus = [
                //         ['小A', '女', 21, '大一'],
                //         ['小B', '男', 23, '大三'],
                //         ['小C', '男', 24, '大四'],
                //         ['小D', '女', 21, '大一'],
                //         ['小E', '女', 22, '大四'],
                //         ['小F', '男', 21, '大一'],
                //         ['小G', '女', 22, '大二'],
                //         ['小H', '女', 20, '大三'],
                //         ['小I', '女', 20, '大一'],
                //         ['小J', '男', 20, '大三'],
                //         ['小K', '女', 23, '大四'],
                //         ['小L', '男', 20, '大三'],
                //         ['小M', '女', 21, '大二'],
                //         ['小N', '男', 20, '大一']
                // ];

                // function searchResult(arr, a, b) {
                //         return arr.filter(function (item) {
                //                 return item[1] === a && item[3] === b
                //         })
                // }

                // console.log(searchResult(stus, "男", "大一"))



// ********************************************************************************************************************************

// 11、现在有一个数组存放字符串数据：
// ['item1', 'item2','item3', 'item4', 'item5']
// 有另外一个数组存放一组数组：
// [
//   [ 'section1',  0 ],
//   [ 'section2',  2  ]
// ]
// 最后结果是：['section1', 'item1', 'item2', 'section2', 'item3', 'item4', 'item5']

//12.一维数组转二维
// var arr = [1, 2, 32, 4, 5, 6, 7, 8, 9, 10];

// 补全代码   ******************************************************************************************************

                /* 题目一：补全代码题：数组的每个元素都执行fn函数，且将数组 arr 中的元素及数组的下标作为调用函数 fn 的参数来使用。
                 * @param {object} [arr 数组]
                 * @param {function} [fn 回调函数]
                 */
// function forEach(arr, fn) {
//     // 此处补全代码，实现题目要求

// }
// var arr = ['a', 'b', 'c'];
// // 调用forEach函数
// forEach(arr, function(item, index) {
//     console.log(item, index);
// });
                /* 打印结果是:
                'a',0
                'b',1
                'c',2
                */

// ********************************************************************************************************************************

//案例3:封装一个noRepeat函数,从数组中随机取出3个不同的值，放入一个新数组，升序排序后返回。数组如下: var arr = [2,12,4,13,95,96,19,33];
// 评分标准 
// 1.正确使用随机数，将获取到的值放入新数组(10分)
// 2.正确实现去重和排序（10分）
// 3.不允许使用数组内置的indexOf方法，自己封装一个（10分）

// ********************************************************************************************************************************
        </script>
</body>

</html>